

using namespace std;
#ifndef PROTOCOLO_H_
#define PROTOCOLO_H_

using namespace std;

#include "defines.h"

/**
 * Struct que modela a un jugador dentro del torneo, se usa dentro de los structs
 * a enviar entre el servidor partida y torneo, tambien es el tipo de dato que usa
 * el servidor torneo para su lista de jugadores (disponibles o en partida).
 */
typedef struct {
    char      	nombre[MSJ_LENGHT];     //Nombre del cliente.
    int         socket_id;  //Socket donde esta conectado el cliente.
    long int    puntaje;    //Puntaje total.
    bool        conectado;  //Indica si el jugador sigue conectado.
    long int    ranking;    //Posicion en el torneo.
} t_jugador;

/**
 * Struct a enviar entre el servidor partida y torneo, para actualizar
 * los datos de la partida y sus jugadores.
 */
typedef struct {
    t_jugador     jugador1;   //Datos del jugador1.
    t_jugador     jugador2;   //Datos del jugador2.
    long int    partidaId;  //Id de la partida, dentro del torneo.
    bool        activo;  //Bool que indica si sigue activo.
} t_partida;


/**
 * Struct a enviar de los jugadores al servidor partida, para ejecutar una accion
 */
typedef struct {
    unsigned short int id_accion;
    short int id_entidad;
    short int mov_x;
    short int mov_y;
    char msj[MSJ_LENGHT];
} t_accion;

/**
 * Struct a enviar entre el servidor torneo y el daemon para informar los pids de partidas
 */
typedef struct {
    long int partidas[100];		//Vector con los pids de las partidas.
} t_vector_daemon;

#endif /* PROTOCOLO_H_ */
